🎖️GitЯра🎖️
Node / meshtastic / Meshtastic-Android / files / feature / settings / src / commonMain / kotlin / org / meshtastic / feature / settings / debugging / Debug.kt
Displaying Raw • Download
feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/debugging/Debug.kt 01cd54907d62cd90913d3d071b6bc240cae365ef (01cd5490) Text, 19.91 KB
T8b949e/*
* Copyright (c) 2026 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
Tff7b72package T7ee787org.meshtastic.feature.settings.debugging
Tff7b72import T7ee787androidx.compose.animation.core.animateFloatAsState
Tff7b72import T7ee787androidx.compose.foundation.BorderStroke
Tff7b72import T7ee787androidx.compose.foundation.background
Tff7b72import T7ee787androidx.compose.foundation.clickable
Tff7b72import T7ee787androidx.compose.foundation.layout.Arrangement
Tff7b72import T7ee787androidx.compose.foundation.layout.Column
Tff7b72import T7ee787androidx.compose.foundation.layout.Row
Tff7b72import T7ee787androidx.compose.foundation.layout.fillMaxSize
Tff7b72import T7ee787androidx.compose.foundation.layout.fillMaxWidth
Tff7b72import T7ee787androidx.compose.foundation.layout.padding
Tff7b72import T7ee787androidx.compose.foundation.lazy.LazyColumn
Tff7b72import T7ee787androidx.compose.foundation.lazy.items
Tff7b72import T7ee787androidx.compose.foundation.lazy.rememberLazyListState
Tff7b72import T7ee787androidx.compose.foundation.text.selection.SelectionContainer
Tff7b72import T7ee787androidx.compose.material3.Card
Tff7b72import T7ee787androidx.compose.material3.CardDefaults
Tff7b72import T7ee787androidx.compose.material3.ColorScheme
Tff7b72import T7ee787androidx.compose.material3.Icon
Tff7b72import T7ee787androidx.compose.material3.IconButton
Tff7b72import T7ee787androidx.compose.material3.IconToggleButton
Tff7b72import T7ee787androidx.compose.material3.MaterialTheme
Tff7b72import T7ee787androidx.compose.material3.PrimaryTabRow
Tff7b72import T7ee787androidx.compose.material3.Scaffold
Tff7b72import T7ee787androidx.compose.material3.Tab
Tff7b72import T7ee787androidx.compose.material3.Text
Tff7b72import T7ee787androidx.compose.runtime.Composable
Tff7b72import T7ee787androidx.compose.runtime.LaunchedEffect
Tff7b72import T7ee787androidx.compose.runtime.derivedStateOf
Tff7b72import T7ee787androidx.compose.runtime.getValue
Tff7b72import T7ee787androidx.compose.runtime.mutableIntStateOf
Tff7b72import T7ee787androidx.compose.runtime.mutableStateOf
Tff7b72import T7ee787androidx.compose.runtime.remember
Tff7b72import T7ee787androidx.compose.runtime.saveable.rememberSaveable
Tff7b72import T7ee787androidx.compose.runtime.setValue
Tff7b72import T7ee787androidx.compose.ui.Alignment
Tff7b72import T7ee787androidx.compose.ui.Modifier
Tff7b72import T7ee787androidx.compose.ui.graphics.graphicsLayer
Tff7b72import T7ee787androidx.compose.ui.text.AnnotatedString
Tff7b72import T7ee787androidx.compose.ui.text.SpanStyle
Tff7b72import T7ee787androidx.compose.ui.text.TextStyle
Tff7b72import T7ee787androidx.compose.ui.text.buildAnnotatedString
Tff7b72import T7ee787androidx.compose.ui.text.font.FontFamily
Tff7b72import T7ee787androidx.compose.ui.text.font.FontStyle
Tff7b72import T7ee787androidx.compose.ui.text.font.FontWeight
Tff7b72import T7ee787androidx.compose.ui.unit.dp
Tff7b72import T7ee787androidx.compose.ui.unit.sp
Tff7b72import T7ee787androidx.lifecycle.compose.collectAsStateWithLifecycle
Tff7b72import T7ee787kotlinx.collections.immutable.toImmutableList
Tff7b72import T7ee787org.jetbrains.compose.resources.pluralStringResource
Tff7b72import T7ee787org.jetbrains.compose.resources.stringResource
Tff7b72import T7ee787org.meshtastic.core.resources.Res
Tff7b72import T7ee787org.meshtastic.core.resources.debug_clear
Tff7b72import T7ee787org.meshtastic.core.resources.debug_decoded_payload
Tff7b72import T7ee787org.meshtastic.core.resources.debug_logs_export
Tff7b72import T7ee787org.meshtastic.core.resources.debug_logs_export_warning
Tff7b72import T7ee787org.meshtastic.core.resources.debug_panel
Tff7b72import T7ee787org.meshtastic.core.resources.debug_store_logs_summary
Tff7b72import T7ee787org.meshtastic.core.resources.debug_store_logs_title
Tff7b72import T7ee787org.meshtastic.core.resources.debug_tab_app_logs
Tff7b72import T7ee787org.meshtastic.core.resources.debug_tab_packets
Tff7b72import T7ee787org.meshtastic.core.resources.log_retention_days
Tff7b72import T7ee787org.meshtastic.core.resources.log_retention_days_quantity
Tff7b72import T7ee787org.meshtastic.core.resources.log_retention_days_summary
Tff7b72import T7ee787org.meshtastic.core.resources.log_retention_hours
Tff7b72import T7ee787org.meshtastic.core.resources.log_retention_never
Tff7b72import T7ee787org.meshtastic.core.ui.component.CopyIconButton
Tff7b72import T7ee787org.meshtastic.core.ui.component.DropDownPreference
Tff7b72import T7ee787org.meshtastic.core.ui.component.MainAppBar
Tff7b72import T7ee787org.meshtastic.core.ui.component.MeshtasticResourceDialog
Tff7b72import T7ee787org.meshtastic.core.ui.component.SwitchPreference
Tff7b72import T7ee787org.meshtastic.core.ui.icon.Delete
Tff7b72import T7ee787org.meshtastic.core.ui.icon.MeshtasticIcons
Tff7b72import T7ee787org.meshtastic.core.ui.icon.Settings
Tff7b72import T7ee787org.meshtastic.core.ui.theme.AnnotationColor
Tff7b72import T7ee787org.meshtastic.feature.settings.debugging.DebugViewModel.UiMeshLog
Tff7b72private Tff7b72val Te6edf3REGEX_ANNOTATED_NODE_ID Tff7b72= Te6edf3RegexTb4b4b4(Ta5d6ff"Ta5d6ff\\Ta5d6ff(![0-9a-fA-F]{8}Ta5d6ff\\Ta5d6ff)$Ta5d6ff"Tb4b4b4, Te6edf3RegexOptionTb4b4b4.Te6edf3MULTILINETb4b4b4)
T8b949e// Suppressions match this screen's pre-existing detekt baseline entries; editing the body reset the baseline hashes.
Tf0883e@SuppressTb4b4b4(Ta5d6ff"Ta5d6ffLongMethodTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffViewModelForwardingTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffModifierMissingTa5d6ff"Tb4b4b4)
Tf0883e@Composable
Tff7b72fun Td2a8ffDebugScreenTb4b4b4(Te6edf3onNavigateUpTb4b4b4: Tb4b4b4(Tb4b4b4) Tff7b72-Tff7b72> Tffa657UnitTb4b4b4, Te6edf3viewModelTb4b4b4: Te6edf3DebugViewModelTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3listState Tff7b72= Te6edf3rememberLazyListStateTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3logs Tff7b72by Te6edf3viewModelTb4b4b4.Te6edf3meshLogTb4b4b4.Te6edf3collectAsStateWithLifecycleTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3searchState Tff7b72by Te6edf3viewModelTb4b4b4.Te6edf3searchStateTb4b4b4.Te6edf3collectAsStateWithLifecycleTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3filterTexts Tff7b72by Te6edf3viewModelTb4b4b4.Te6edf3filterTextsTb4b4b4.Te6edf3collectAsStateWithLifecycleTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3selectedLogId Tff7b72by Te6edf3viewModelTb4b4b4.Te6edf3selectedLogIdTb4b4b4.Te6edf3collectAsStateWithLifecycleTb4b4b4(Tb4b4b4)
Tff7b72var Te6edf3filterMode Tff7b72by Te6edf3remember Tb4b4b4{ Te6edf3mutableStateOfTb4b4b4(Te6edf3FilterModeTb4b4b4.Te6edf3ORTb4b4b4) Tb4b4b4}
Tff7b72val Te6edf3filteredLogsState Tff7b72by
Te6edf3rememberTb4b4b4(Te6edf3logsTb4b4b4, Te6edf3filterTextsTb4b4b4, Te6edf3filterModeTb4b4b4) Tb4b4b4{
Te6edf3derivedStateOf Tb4b4b4{ Te6edf3viewModelTb4b4b4.Te6edf3filterManagerTb4b4b4.Te6edf3filterLogsTb4b4b4(Te6edf3logsTb4b4b4, Te6edf3filterTextsTb4b4b4, Te6edf3filterModeTb4b4b4)Tb4b4b4.Te6edf3toImmutableListTb4b4b4(Tb4b4b4) Tb4b4b4}
Tb4b4b4}
Tff7b72val Te6edf3filteredLogs Tff7b72= Te6edf3filteredLogsState
Te6edf3LaunchedEffectTb4b4b4(Te6edf3filteredLogsTb4b4b4) Tb4b4b4{ Te6edf3viewModelTb4b4b4.Te6edf3updateFilteredLogsTb4b4b4(Te6edf3filteredLogsTb4b4b4) Tb4b4b4}
Tff7b72val Te6edf3shouldAutoScroll Tff7b72by Te6edf3remember Tb4b4b4{ Te6edf3derivedStateOf Tb4b4b4{ Te6edf3listStateTb4b4b4.Te6edf3firstVisibleItemIndex Tff7b72< T79c0ff3 Tb4b4b4} Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3shouldAutoScrollTb4b4b4) Tb4b4b4{
Te6edf3LaunchedEffectTb4b4b4(Te6edf3filteredLogsTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3listStateTb4b4b4.Te6edf3isScrollInProgressTb4b4b4) Tb4b4b4{
Te6edf3listStateTb4b4b4.Te6edf3animateScrollToItemTb4b4b4(T79c0ff0Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
T8b949e// Handle search result navigation
Te6edf3LaunchedEffectTb4b4b4(Te6edf3searchStateTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3searchStateTb4b4b4.Te6edf3currentMatchIndex Tff7b72>Tff7b72= T79c0ff0 Tff7b72&Tff7b72& Te6edf3searchStateTb4b4b4.Te6edf3currentMatchIndex Tff7b72< Te6edf3searchStateTb4b4b4.Te6edf3allMatchesTb4b4b4.Te6edf3sizeTb4b4b4) Tb4b4b4{
Te6edf3listStateTb4b4b4.Te6edf3requestScrollToItemTb4b4b4(Te6edf3searchStateTb4b4b4.Te6edf3allMatchesTff7b72[Te6edf3searchStateTb4b4b4.Te6edf3currentMatchIndexTff7b72]Tb4b4b4.Te6edf3logIndexTb4b4b4)
Tb4b4b4}
Tb4b4b4}
T8b949e// Prepare a document creator for exporting logs
Tff7b72val Te6edf3exportLogsLauncher Tff7b72= Te6edf3rememberLogExporter Tb4b4b4{ Te6edf3buildString Tb4b4b4{ Te6edf3formatLogsToTb4b4b4(Tff7b72thisTb4b4b4, Te6edf3viewModelTb4b4b4.Te6edf3loadLogsForExportTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4} Tb4b4b4}
T8b949e// The export exists so users can attach it to a public issue, so state what it contains before writing it.
Tff7b72var Te6edf3showExportWarning Tff7b72by Te6edf3rememberSaveable Tb4b4b4{ Te6edf3mutableStateOfTb4b4b4(Tff7b72falseTb4b4b4) Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3showExportWarningTb4b4b4) Tb4b4b4{
Te6edf3MeshtasticResourceDialogTb4b4b4(
Te6edf3titleRes Tff7b72= Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3debug_logs_exportTb4b4b4,
Te6edf3messageRes Tff7b72= Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3debug_logs_export_warningTb4b4b4,
Te6edf3onConfirm Tff7b72= Tb4b4b4{
Te6edf3showExportWarning Tff7b72= Tff7b72false
Te6edf3exportLogsLauncherTb4b4b4(Te6edf3timestampedExportNameTb4b4b4(Ta5d6ff"Ta5d6ffmeshtastic_debugTa5d6ff"Tb4b4b4)Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Te6edf3onDismiss Tff7b72= Tb4b4b4{ Te6edf3showExportWarning Tff7b72= Tff7b72false Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tff7b72var Te6edf3showSettings Tff7b72by Te6edf3remember Tb4b4b4{ Te6edf3mutableStateOfTb4b4b4(Tff7b72falseTb4b4b4) Tb4b4b4}
Tff7b72var Te6edf3selectedTab Tff7b72by Te6edf3remember Tb4b4b4{ Te6edf3mutableIntStateOfTb4b4b4(T79c0ff0Tb4b4b4) Tb4b4b4}
Te6edf3ScaffoldTb4b4b4(
Te6edf3topBar Tff7b72= Tb4b4b4{
Te6edf3MainAppBarTb4b4b4(
Te6edf3title Tff7b72= Te6edf3stringResourceTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3debug_panelTb4b4b4)Tb4b4b4,
Te6edf3ourNode Tff7b72= Tff7b72nullTb4b4b4,
Te6edf3showNodeChip Tff7b72= Tff7b72falseTb4b4b4,
Te6edf3canNavigateUp Tff7b72= Tff7b72trueTb4b4b4,
Te6edf3onNavigateUp Tff7b72= Te6edf3onNavigateUpTb4b4b4,
Te6edf3actions Tff7b72= Tb4b4b4{
T8b949e// The settings and delete actions apply to the Packets (MeshLog) list only.
Tff7b72if Tb4b4b4(Te6edf3selectedTab Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3IconToggleButtonTb4b4b4(Te6edf3checked Tff7b72= Te6edf3showSettingsTb4b4b4, Te6edf3onCheckedChange Tff7b72= Tb4b4b4{ Te6edf3showSettings Tff7b72= Tffa657it Tb4b4b4}Tb4b4b4) Tb4b4b4{
Te6edf3IconTb4b4b4(Te6edf3imageVector Tff7b72= Te6edf3MeshtasticIconsTb4b4b4.Te6edf3SettingsTb4b4b4, Te6edf3contentDescription Tff7b72= Tff7b72nullTb4b4b4)
Tb4b4b4}
Te6edf3DebugMenuActionsTb4b4b4(Te6edf3deleteLogs Tff7b72= Tb4b4b4{ Te6edf3viewModelTb4b4b4.Te6edf3requestDeleteAllLogsTb4b4b4(Tb4b4b4) Tb4b4b4}Tb4b4b4)
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3onClickChip Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4) Tb4b4b4{ Te6edf3paddingValues Tff7b72-Tff7b72>
Te6edf3ColumnTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3paddingTb4b4b4(Te6edf3paddingValuesTb4b4b4)Tb4b4b4.Te6edf3fillMaxSizeTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3PrimaryTabRowTb4b4b4(Te6edf3selectedTabIndex Tff7b72= Te6edf3selectedTabTb4b4b4) Tb4b4b4{
Te6edf3TabTb4b4b4(
Te6edf3selected Tff7b72= Te6edf3selectedTab Tff7b72=Tff7b72= T79c0ff0Tb4b4b4,
Te6edf3onClick Tff7b72= Tb4b4b4{ Te6edf3selectedTab Tff7b72= T79c0ff0 Tb4b4b4}Tb4b4b4,
Te6edf3text Tff7b72= Tb4b4b4{ Te6edf3TextTb4b4b4(Te6edf3stringResourceTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3debug_tab_packetsTb4b4b4)Tb4b4b4) Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Te6edf3TabTb4b4b4(
Te6edf3selected Tff7b72= Te6edf3selectedTab Tff7b72=Tff7b72= T79c0ff1Tb4b4b4,
Te6edf3onClick Tff7b72= Tb4b4b4{ Te6edf3selectedTab Tff7b72= T79c0ff1 Tb4b4b4}Tb4b4b4,
Te6edf3text Tff7b72= Tb4b4b4{ Te6edf3TextTb4b4b4(Te6edf3stringResourceTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3debug_tab_app_logsTb4b4b4)Tb4b4b4) Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3selectedTab Tff7b72=Tff7b72= T79c0ff1Tb4b4b4) Tb4b4b4{
Te6edf3LogcatContentTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3fillMaxSizeTb4b4b4(Tb4b4b4)Tb4b4b4)
Tff7b72returnTf0883e@Column
Tb4b4b4}
Te6edf3LazyColumnTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3fillMaxSizeTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3state Tff7b72= Te6edf3listStateTb4b4b4) Tb4b4b4{
Te6edf3stickyHeader Tb4b4b4{
Tff7b72val Te6edf3animatedAlpha Tff7b72by
Te6edf3animateFloatAsStateTb4b4b4(
Te6edf3targetValue Tff7b72= Tff7b72if Tb4b4b4(Tff7b72!Te6edf3listStateTb4b4b4.Te6edf3isScrollInProgressTb4b4b4) T79c0ff1.0f Tff7b72else T79c0ff0fTb4b4b4,
Te6edf3label Tff7b72= Ta5d6ff"Ta5d6ffalphaTa5d6ff"Tb4b4b4,
Tb4b4b4)
Te6edf3DebugSearchStateWithViewModelTb4b4b4(
Te6edf3viewModel Tff7b72= Te6edf3viewModelTb4b4b4,
Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3graphicsLayerTb4b4b4(Te6edf3alpha Tff7b72= Te6edf3animatedAlphaTb4b4b4)Tb4b4b4,
Te6edf3searchState Tff7b72= Te6edf3searchStateTb4b4b4,
Te6edf3filterTexts Tff7b72= Te6edf3filterTextsTb4b4b4,
Te6edf3presetFilters Tff7b72= Te6edf3viewModelTb4b4b4.Te6edf3presetFiltersTb4b4b4,
Te6edf3logs Tff7b72= Te6edf3logsTb4b4b4,
Te6edf3filterMode Tff7b72= Te6edf3filterModeTb4b4b4,
Te6edf3onFilterModeChange Tff7b72= Tb4b4b4{ Te6edf3filterMode Tff7b72= Tffa657it Tb4b4b4}Tb4b4b4,
Te6edf3onExportLogs Tff7b72= Tb4b4b4{ Te6edf3showExportWarning Tff7b72= Tff7b72true Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tff7b72if Tb4b4b4(Te6edf3showSettingsTb4b4b4) Tb4b4b4{
Te6edf3DebugLogSettingsTb4b4b4(Te6edf3viewModel Tff7b72= Te6edf3viewModelTb4b4b4)
Tb4b4b4}
Tb4b4b4}
Te6edf3itemsTb4b4b4(Te6edf3filteredLogsTb4b4b4, Te6edf3key Tff7b72= Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3uuid Tb4b4b4}Tb4b4b4) Tb4b4b4{ Te6edf3log Tff7b72-Tff7b72>
Te6edf3DebugItemTb4b4b4(
Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3animateItemTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3log Tff7b72= Te6edf3logTb4b4b4,
Te6edf3searchText Tff7b72= Te6edf3searchStateTb4b4b4.Te6edf3searchTextTb4b4b4,
Te6edf3isSelected Tff7b72= Te6edf3selectedLogId Tff7b72=Tff7b72= Te6edf3logTb4b4b4.Te6edf3uuidTb4b4b4,
Te6edf3onLogClick Tff7b72= Tb4b4b4{ Te6edf3viewModelTb4b4b4.Te6edf3setSelectedLogIdTb4b4b4(Tff7b72if Tb4b4b4(Te6edf3selectedLogId Tff7b72=Tff7b72= Te6edf3logTb4b4b4.Te6edf3uuidTb4b4b4) Tff7b72null Tff7b72else Te6edf3logTb4b4b4.Te6edf3uuidTb4b4b4) Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tf0883e@Composable
Tff7b72private Tff7b72fun Td2a8ffDebugLogSettingsTb4b4b4(Te6edf3viewModelTb4b4b4: Te6edf3DebugViewModelTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3retentionDays Tff7b72= Te6edf3viewModelTb4b4b4.Te6edf3retentionDaysTb4b4b4.Te6edf3collectAsStateWithLifecycleTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3value
Tff7b72val Te6edf3loggingEnabled Tff7b72= Te6edf3viewModelTb4b4b4.Te6edf3loggingEnabledTb4b4b4.Te6edf3collectAsStateWithLifecycleTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3value
Te6edf3ColumnTb4b4b4(
Te6edf3modifier Tff7b72=
Te6edf3ModifierTb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)
Tb4b4b4.Te6edf3backgroundTb4b4b4(Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3surfaceTb4b4b4)
Tb4b4b4.Te6edf3paddingTb4b4b4(Te6edf3horizontal Tff7b72= T79c0ff1T79c0ff2.Te6edf3dpTb4b4b4, Te6edf3vertical Tff7b72= T79c0ff8.Te6edf3dpTb4b4b4)Tb4b4b4,
Te6edf3verticalArrangement Tff7b72= Te6edf3ArrangementTb4b4b4.Te6edf3spacedByTb4b4b4(T79c0ff8.Te6edf3dpTb4b4b4)Tb4b4b4,
Tb4b4b4) Tb4b4b4{
Tf0883e@SuppressTb4b4b4(Ta5d6ff"Ta5d6ffMagicNumberTa5d6ff"Tb4b4b4)
Tff7b72val Te6edf3retentionItems Tff7b72=
Te6edf3listOfTb4b4b4(Tb4b4b4(Tff7b72-T79c0ff1LTb4b4b4) Te6edf3to Te6edf3pluralStringResourceTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3pluralsTb4b4b4.Te6edf3log_retention_hoursTb4b4b4, T79c0ff1Tb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4) Tff7b72+
Te6edf3listOfTb4b4b4(T79c0ff1Tb4b4b4, T79c0ff3Tb4b4b4, T79c0ff7Tb4b4b4, T79c0ff1T79c0ff4Tb4b4b4, T79c0ff3T79c0ff0Tb4b4b4, T79c0ff6T79c0ff0Tb4b4b4, T79c0ff9T79c0ff0Tb4b4b4, T79c0ff1T79c0ff8T79c0ff0Tb4b4b4, T79c0ff3T79c0ff6T79c0ff5Tb4b4b4)Tb4b4b4.Te6edf3map Tb4b4b4{ Te6edf3days Tff7b72-Tff7b72>
Te6edf3daysTb4b4b4.Te6edf3toLongTb4b4b4(Tb4b4b4) Te6edf3to Te6edf3pluralStringResourceTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3pluralsTb4b4b4.Te6edf3log_retention_days_quantityTb4b4b4, Te6edf3daysTb4b4b4, Te6edf3daysTb4b4b4)
Tb4b4b4} Tff7b72+
Te6edf3listOfTb4b4b4(T79c0ff0L Te6edf3to Te6edf3stringResourceTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3log_retention_neverTb4b4b4)Tb4b4b4)
Te6edf3DropDownPreferenceTb4b4b4(
Te6edf3title Tff7b72= Te6edf3stringResourceTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3log_retention_daysTb4b4b4)Tb4b4b4,
Te6edf3enabled Tff7b72= Te6edf3loggingEnabledTb4b4b4,
Te6edf3items Tff7b72= Te6edf3retentionItemsTb4b4b4,
Te6edf3selectedItem Tff7b72= Te6edf3retentionDaysTb4b4b4.Te6edf3toLongTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3onItemSelected Tff7b72= Tb4b4b4{ Te6edf3selectedTb4b4b4: Tffa657Long Tff7b72-Tff7b72> Te6edf3viewModelTb4b4b4.Te6edf3setRetentionDaysTb4b4b4(Te6edf3selectedTb4b4b4.Te6edf3toIntTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4}Tb4b4b4,
Te6edf3summary Tff7b72= Te6edf3stringResourceTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3log_retention_days_summaryTb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3SwitchPreferenceTb4b4b4(
Te6edf3title Tff7b72= Te6edf3stringResourceTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3debug_store_logs_titleTb4b4b4)Tb4b4b4,
Te6edf3enabled Tff7b72= Tff7b72trueTb4b4b4,
Te6edf3checked Tff7b72= Te6edf3loggingEnabledTb4b4b4,
Te6edf3onCheckedChange Tff7b72= Tb4b4b4{ Te6edf3viewModelTb4b4b4.Te6edf3setLoggingEnabledTb4b4b4(Tffa657itTb4b4b4) Tb4b4b4}Tb4b4b4,
Te6edf3summary Tff7b72= Te6edf3stringResourceTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3debug_store_logs_summaryTb4b4b4)Tb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tf0883e@Composable
Tff7b72internal Tff7b72fun Td2a8ffDebugItemTb4b4b4(
Te6edf3logTb4b4b4: Te6edf3UiMeshLogTb4b4b4,
Te6edf3modifierTb4b4b4: Te6edf3Modifier Tff7b72= Te6edf3ModifierTb4b4b4,
Te6edf3searchTextTb4b4b4: Tffa657String Tff7b72= Ta5d6ff"Ta5d6ff"Tb4b4b4,
Te6edf3isSelectedTb4b4b4: Tffa657Boolean Tff7b72= Tff7b72falseTb4b4b4,
Te6edf3onLogClickTb4b4b4: Tb4b4b4(Tb4b4b4) Tff7b72-Tff7b72> Tffa657Unit Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3colorScheme Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorScheme
Te6edf3CardTb4b4b4(
Te6edf3modifier Tff7b72= Te6edf3modifierTb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3paddingTb4b4b4(T79c0ff4.Te6edf3dpTb4b4b4)Tb4b4b4,
Te6edf3colors Tff7b72=
Te6edf3CardDefaultsTb4b4b4.Te6edf3cardColorsTb4b4b4(
Te6edf3containerColor Tff7b72=
Tff7b72if Tb4b4b4(Te6edf3isSelectedTb4b4b4) Tb4b4b4{
Te6edf3colorSchemeTb4b4b4.Te6edf3primaryTb4b4b4.Te6edf3copyTb4b4b4(Te6edf3alpha Tff7b72= T79c0ff0.1fTb4b4b4)
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3colorSchemeTb4b4b4.Te6edf3surface
Tb4b4b4}Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Te6edf3border Tff7b72=
Tff7b72if Tb4b4b4(Te6edf3isSelectedTb4b4b4) Tb4b4b4{
Te6edf3BorderStrokeTb4b4b4(T79c0ff2.Te6edf3dpTb4b4b4, Te6edf3colorSchemeTb4b4b4.Te6edf3primaryTb4b4b4)
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72null
Tb4b4b4}Tb4b4b4,
Tb4b4b4) Tb4b4b4{
Te6edf3SelectionContainer Tb4b4b4{
Te6edf3ColumnTb4b4b4(
Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3paddingTb4b4b4(Tff7b72if Tb4b4b4(Te6edf3isSelectedTb4b4b4) T79c0ff1T79c0ff2.Te6edf3dp Tff7b72else T79c0ff8.Te6edf3dpTb4b4b4)Tb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3clickable Tb4b4b4{ Te6edf3onLogClickTb4b4b4(Tb4b4b4) Tb4b4b4}Tb4b4b4,
Tb4b4b4) Tb4b4b4{
Te6edf3DebugItemHeaderTb4b4b4(Te6edf3log Tff7b72= Te6edf3logTb4b4b4, Te6edf3searchText Tff7b72= Te6edf3searchTextTb4b4b4, Te6edf3isSelected Tff7b72= Te6edf3isSelectedTb4b4b4, Te6edf3theme Tff7b72= Te6edf3colorSchemeTb4b4b4)
Tff7b72val Te6edf3messageAnnotatedString Tff7b72= Te6edf3rememberAnnotatedLogMessageTb4b4b4(Te6edf3logTb4b4b4, Te6edf3searchTextTb4b4b4)
Te6edf3TextTb4b4b4(
Te6edf3text Tff7b72= Te6edf3messageAnnotatedStringTb4b4b4,
Te6edf3style Tff7b72=
Te6edf3TextStyleTb4b4b4(
Te6edf3fontSize Tff7b72= Tff7b72if Tb4b4b4(Te6edf3isSelectedTb4b4b4) T79c0ff1T79c0ff2.Te6edf3sp Tff7b72else T79c0ff9.Te6edf3spTb4b4b4,
Te6edf3fontFamily Tff7b72= Te6edf3FontFamilyTb4b4b4.Te6edf3MonospaceTb4b4b4,
Te6edf3color Tff7b72= Te6edf3colorSchemeTb4b4b4.Te6edf3onSurfaceTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)
T8b949e// Show decoded payload if available, with search highlighting
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3logTb4b4b4.Te6edf3decodedPayloadTb4b4b4.Te6edf3isNullOrBlankTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3DecodedPayloadBlockTb4b4b4(
Te6edf3decodedPayload Tff7b72= Te6edf3logTb4b4b4.Te6edf3decodedPayloadTb4b4b4,
Te6edf3isSelected Tff7b72= Te6edf3isSelectedTb4b4b4,
Te6edf3colorScheme Tff7b72= Te6edf3colorSchemeTb4b4b4,
Te6edf3searchText Tff7b72= Te6edf3searchTextTb4b4b4,
Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tf0883e@Composable
Tff7b72private Tff7b72fun Td2a8ffDebugItemHeaderTb4b4b4(Te6edf3logTb4b4b4: Te6edf3UiMeshLogTb4b4b4, Te6edf3searchTextTb4b4b4: Tffa657StringTb4b4b4, Te6edf3isSelectedTb4b4b4: Tffa657BooleanTb4b4b4, Te6edf3themeTb4b4b4: Te6edf3ColorSchemeTb4b4b4) Tb4b4b4{
Te6edf3RowTb4b4b4(
Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3paddingTb4b4b4(Te6edf3bottom Tff7b72= Tff7b72if Tb4b4b4(Te6edf3isSelectedTb4b4b4) T79c0ff1T79c0ff2.Te6edf3dp Tff7b72else T79c0ff8.Te6edf3dpTb4b4b4)Tb4b4b4,
Te6edf3horizontalArrangement Tff7b72= Te6edf3ArrangementTb4b4b4.Te6edf3SpaceBetweenTb4b4b4,
Te6edf3verticalAlignment Tff7b72= Te6edf3AlignmentTb4b4b4.Te6edf3CenterVerticallyTb4b4b4,
Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3typeAnnotatedString Tff7b72= Te6edf3rememberAnnotatedStringTb4b4b4(Te6edf3text Tff7b72= Te6edf3logTb4b4b4.Te6edf3messageTypeTb4b4b4, Te6edf3searchText Tff7b72= Te6edf3searchTextTb4b4b4)
Te6edf3TextTb4b4b4(
Te6edf3text Tff7b72= Te6edf3typeAnnotatedStringTb4b4b4,
Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3weightTb4b4b4(T79c0ff1fTb4b4b4)Tb4b4b4,
Te6edf3style Tff7b72=
Te6edf3TextStyleTb4b4b4(
Te6edf3fontWeight Tff7b72= Te6edf3FontWeightTb4b4b4.Te6edf3BoldTb4b4b4,
Te6edf3fontSize Tff7b72= Tff7b72if Tb4b4b4(Te6edf3isSelectedTb4b4b4) T79c0ff1T79c0ff6.Te6edf3sp Tff7b72else T79c0ff1T79c0ff4.Te6edf3spTb4b4b4,
Te6edf3color Tff7b72= Te6edf3themeTb4b4b4.Te6edf3onSurfaceTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)
T8b949e// Sanitised exactly like the file export — this text gets pasted into public issue trackers just as often, so
T8b949e// it must not carry key material either. Marked sensitive so the OS does not surface it in a paste preview.
Tff7b72val Te6edf3fullLogText Tff7b72= Te6edf3rememberTb4b4b4(Te6edf3logTb4b4b4.Te6edf3logMessageTb4b4b4, Te6edf3logTb4b4b4.Te6edf3decodedPayloadTb4b4b4) Tb4b4b4{ Te6edf3formatLogEntryForCopyTb4b4b4(Te6edf3logTb4b4b4) Tb4b4b4}
Te6edf3CopyIconButtonTb4b4b4(Te6edf3valueToCopy Tff7b72= Te6edf3fullLogTextTb4b4b4, Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3paddingTb4b4b4(Te6edf3start Tff7b72= T79c0ff8.Te6edf3dpTb4b4b4)Tb4b4b4, Te6edf3sensitive Tff7b72= Tff7b72trueTb4b4b4)
Tff7b72val Te6edf3dateAnnotatedString Tff7b72= Te6edf3rememberAnnotatedStringTb4b4b4(Te6edf3text Tff7b72= Te6edf3logTb4b4b4.Te6edf3formattedReceivedDateTb4b4b4, Te6edf3searchText Tff7b72= Te6edf3searchTextTb4b4b4)
Te6edf3TextTb4b4b4(
Te6edf3text Tff7b72= Te6edf3dateAnnotatedStringTb4b4b4,
Te6edf3style Tff7b72=
Te6edf3TextStyleTb4b4b4(
Te6edf3fontWeight Tff7b72= Te6edf3FontWeightTb4b4b4.Te6edf3BoldTb4b4b4,
Te6edf3fontSize Tff7b72= Tff7b72if Tb4b4b4(Te6edf3isSelectedTb4b4b4) T79c0ff1T79c0ff4.Te6edf3sp Tff7b72else T79c0ff1T79c0ff2.Te6edf3spTb4b4b4,
Te6edf3color Tff7b72= Te6edf3themeTb4b4b4.Te6edf3onSurfaceTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tf0883e@Composable
Tff7b72private Tff7b72fun Td2a8ffrememberAnnotatedStringTb4b4b4(Te6edf3textTb4b4b4: Tffa657StringTb4b4b4, Te6edf3searchTextTb4b4b4: Tffa657StringTb4b4b4)Tb4b4b4: Te6edf3AnnotatedString Tb4b4b4{
Tff7b72val Te6edf3theme Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorScheme
Tff7b72val Te6edf3highlightStyle Tff7b72= Te6edf3SpanStyleTb4b4b4(Te6edf3background Tff7b72= Te6edf3themeTb4b4b4.Te6edf3primaryTb4b4b4.Te6edf3copyTb4b4b4(Te6edf3alpha Tff7b72= T79c0ff0.3fTb4b4b4)Tb4b4b4, Te6edf3color Tff7b72= Te6edf3themeTb4b4b4.Te6edf3onSurfaceTb4b4b4)
Tff7b72return Te6edf3rememberTb4b4b4(Te6edf3textTb4b4b4, Te6edf3searchTextTb4b4b4) Tb4b4b4{
Te6edf3buildAnnotatedString Tb4b4b4{
Te6edf3appendTb4b4b4(Te6edf3textTb4b4b4)
Tff7b72if Tb4b4b4(Te6edf3searchTextTb4b4b4.Te6edf3isNotEmptyTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3searchTextTb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff"Ta5d6ff Ta5d6ff"Tb4b4b4)Tb4b4b4.Te6edf3forEach Tb4b4b4{ Te6edf3term Tff7b72-Tff7b72>
Te6edf3RegexTb4b4b4(Te6edf3RegexTb4b4b4.Te6edf3escapeTb4b4b4(Te6edf3termTb4b4b4)Tb4b4b4, Te6edf3RegexOptionTb4b4b4.Te6edf3IGNORE_CASETb4b4b4)Tb4b4b4.Te6edf3findAllTb4b4b4(Te6edf3textTb4b4b4)Tb4b4b4.Te6edf3forEach Tb4b4b4{ Te6edf3match Tff7b72-Tff7b72>
Te6edf3addStyleTb4b4b4(Te6edf3style Tff7b72= Te6edf3highlightStyleTb4b4b4, Te6edf3start Tff7b72= Te6edf3matchTb4b4b4.Te6edf3rangeTb4b4b4.Te6edf3firstTb4b4b4, Te6edf3end Tff7b72= Te6edf3matchTb4b4b4.Te6edf3rangeTb4b4b4.Te6edf3last Tff7b72+ T79c0ff1Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tf0883e@Composable
Tff7b72private Tff7b72fun Td2a8ffrememberAnnotatedLogMessageTb4b4b4(Te6edf3logTb4b4b4: Te6edf3UiMeshLogTb4b4b4, Te6edf3searchTextTb4b4b4: Tffa657StringTb4b4b4)Tb4b4b4: Te6edf3AnnotatedString Tb4b4b4{
Tff7b72val Te6edf3theme Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorScheme
Tff7b72val Te6edf3style Tff7b72= Te6edf3SpanStyleTb4b4b4(Te6edf3color Tff7b72= Te6edf3AnnotationColorTb4b4b4, Te6edf3fontStyle Tff7b72= Te6edf3FontStyleTb4b4b4.Te6edf3ItalicTb4b4b4)
Tff7b72val Te6edf3highlightStyle Tff7b72= Te6edf3SpanStyleTb4b4b4(Te6edf3background Tff7b72= Te6edf3themeTb4b4b4.Te6edf3primaryTb4b4b4.Te6edf3copyTb4b4b4(Te6edf3alpha Tff7b72= T79c0ff0.3fTb4b4b4)Tb4b4b4, Te6edf3color Tff7b72= Te6edf3themeTb4b4b4.Te6edf3onSurfaceTb4b4b4)
Tff7b72return Te6edf3rememberTb4b4b4(Te6edf3logTb4b4b4.Te6edf3uuidTb4b4b4, Te6edf3searchTextTb4b4b4) Tb4b4b4{
Te6edf3buildAnnotatedString Tb4b4b4{
Te6edf3appendTb4b4b4(Te6edf3logTb4b4b4.Te6edf3logMessageTb4b4b4)
T8b949e// Add node ID annotations
Te6edf3REGEX_ANNOTATED_NODE_IDTb4b4b4.Te6edf3findAllTb4b4b4(Te6edf3logTb4b4b4.Te6edf3logMessageTb4b4b4)Tb4b4b4.Te6edf3toListTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3reversedTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3forEach Tb4b4b4{
Te6edf3addStyleTb4b4b4(Te6edf3style Tff7b72= Te6edf3styleTb4b4b4, Te6edf3start Tff7b72= Tffa657itTb4b4b4.Te6edf3rangeTb4b4b4.Te6edf3firstTb4b4b4, Te6edf3end Tff7b72= Tffa657itTb4b4b4.Te6edf3rangeTb4b4b4.Te6edf3last Tff7b72+ T79c0ff1Tb4b4b4)
Tb4b4b4}
T8b949e// Add search highlight annotations
Tff7b72if Tb4b4b4(Te6edf3searchTextTb4b4b4.Te6edf3isNotEmptyTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3searchTextTb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff"Ta5d6ff Ta5d6ff"Tb4b4b4)Tb4b4b4.Te6edf3forEach Tb4b4b4{ Te6edf3term Tff7b72-Tff7b72>
Te6edf3RegexTb4b4b4(Te6edf3RegexTb4b4b4.Te6edf3escapeTb4b4b4(Te6edf3termTb4b4b4)Tb4b4b4, Te6edf3RegexOptionTb4b4b4.Te6edf3IGNORE_CASETb4b4b4)Tb4b4b4.Te6edf3findAllTb4b4b4(Te6edf3logTb4b4b4.Te6edf3logMessageTb4b4b4)Tb4b4b4.Te6edf3forEach Tb4b4b4{ Te6edf3match Tff7b72-Tff7b72>
Te6edf3addStyleTb4b4b4(Te6edf3style Tff7b72= Te6edf3highlightStyleTb4b4b4, Te6edf3start Tff7b72= Te6edf3matchTb4b4b4.Te6edf3rangeTb4b4b4.Te6edf3firstTb4b4b4, Te6edf3end Tff7b72= Te6edf3matchTb4b4b4.Te6edf3rangeTb4b4b4.Te6edf3last Tff7b72+ T79c0ff1Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tf0883e@Composable
Tff7b72fun Td2a8ffDebugMenuActionsTb4b4b4(Te6edf3deleteLogsTb4b4b4: Tb4b4b4(Tb4b4b4) Tff7b72-Tff7b72> Tffa657UnitTb4b4b4, Te6edf3modifierTb4b4b4: Te6edf3Modifier Tff7b72= Te6edf3ModifierTb4b4b4) Tb4b4b4{
Te6edf3IconButtonTb4b4b4(Te6edf3onClick Tff7b72= Te6edf3deleteLogsTb4b4b4, Te6edf3modifier Tff7b72= Te6edf3modifierTb4b4b4.Te6edf3paddingTb4b4b4(T79c0ff4.Te6edf3dpTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3IconTb4b4b4(Te6edf3imageVector Tff7b72= Te6edf3MeshtasticIconsTb4b4b4.Te6edf3DeleteTb4b4b4, Te6edf3contentDescription Tff7b72= Te6edf3stringResourceTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3debug_clearTb4b4b4)Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tf0883e@Composable
Tff7b72private Tff7b72fun Td2a8ffDecodedPayloadBlockTb4b4b4(
Te6edf3decodedPayloadTb4b4b4: Tffa657StringTb4b4b4,
Te6edf3isSelectedTb4b4b4: Tffa657BooleanTb4b4b4,
Te6edf3colorSchemeTb4b4b4: Te6edf3ColorSchemeTb4b4b4,
Te6edf3searchTextTb4b4b4: Tffa657String Tff7b72= Ta5d6ff"Ta5d6ff"Tb4b4b4,
Te6edf3modifierTb4b4b4: Te6edf3Modifier Tff7b72= Te6edf3ModifierTb4b4b4,
Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3commonTextStyle Tff7b72=
Te6edf3TextStyleTb4b4b4(
Te6edf3fontSize Tff7b72=
Tff7b72if Tb4b4b4(Te6edf3isSelectedTb4b4b4) Tb4b4b4{
T79c0ff1T79c0ff0.Te6edf3sp
Tb4b4b4} Tff7b72else Tb4b4b4{
T79c0ff8.Te6edf3sp
Tb4b4b4}Tb4b4b4,
Te6edf3fontWeight Tff7b72= Te6edf3FontWeightTb4b4b4.Te6edf3BoldTb4b4b4,
Te6edf3color Tff7b72= Te6edf3colorSchemeTb4b4b4.Te6edf3primaryTb4b4b4,
Tb4b4b4)
Te6edf3ColumnTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3modifierTb4b4b4) Tb4b4b4{
Te6edf3TextTb4b4b4(
Te6edf3text Tff7b72= Te6edf3stringResourceTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3debug_decoded_payloadTb4b4b4)Tb4b4b4,
Te6edf3style Tff7b72= Te6edf3commonTextStyleTb4b4b4,
Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3paddingTb4b4b4(Te6edf3top Tff7b72= T79c0ff8.Te6edf3dpTb4b4b4, Te6edf3bottom Tff7b72= T79c0ff4.Te6edf3dpTb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3TextTb4b4b4(Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ff{Ta5d6ff"Tb4b4b4, Te6edf3style Tff7b72= Te6edf3commonTextStyleTb4b4b4, Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3paddingTb4b4b4(Te6edf3start Tff7b72= T79c0ff8.Te6edf3dpTb4b4b4, Te6edf3bottom Tff7b72= T79c0ff2.Te6edf3dpTb4b4b4)Tb4b4b4)
Tff7b72val Te6edf3annotatedPayload Tff7b72= Te6edf3rememberAnnotatedDecodedPayloadTb4b4b4(Te6edf3decodedPayloadTb4b4b4, Te6edf3searchTextTb4b4b4, Te6edf3colorSchemeTb4b4b4)
Te6edf3TextTb4b4b4(
Te6edf3text Tff7b72= Te6edf3annotatedPayloadTb4b4b4,
Te6edf3softWrap Tff7b72= Tff7b72trueTb4b4b4,
Te6edf3style Tff7b72=
Te6edf3TextStyleTb4b4b4(
Te6edf3fontSize Tff7b72= Tff7b72if Tb4b4b4(Te6edf3isSelectedTb4b4b4) T79c0ff1T79c0ff0.Te6edf3sp Tff7b72else T79c0ff8.Te6edf3spTb4b4b4,
Te6edf3fontFamily Tff7b72= Te6edf3FontFamilyTb4b4b4.Te6edf3MonospaceTb4b4b4,
Te6edf3color Tff7b72= Te6edf3colorSchemeTb4b4b4.Te6edf3onSurfaceTb4b4b4.Te6edf3copyTb4b4b4(Te6edf3alpha Tff7b72= T79c0ff0.8fTb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3paddingTb4b4b4(Te6edf3start Tff7b72= T79c0ff1T79c0ff6.Te6edf3dpTb4b4b4, Te6edf3bottom Tff7b72= T79c0ff0.Te6edf3dpTb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3TextTb4b4b4(Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ff}Ta5d6ff"Tb4b4b4, Te6edf3style Tff7b72= Te6edf3commonTextStyleTb4b4b4, Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3paddingTb4b4b4(Te6edf3start Tff7b72= T79c0ff8.Te6edf3dpTb4b4b4, Te6edf3bottom Tff7b72= T79c0ff4.Te6edf3dpTb4b4b4)Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tf0883e@Composable
Tff7b72private Tff7b72fun Td2a8ffrememberAnnotatedDecodedPayloadTb4b4b4(
Te6edf3decodedPayloadTb4b4b4: Tffa657StringTb4b4b4,
Te6edf3searchTextTb4b4b4: Tffa657StringTb4b4b4,
Te6edf3colorSchemeTb4b4b4: Te6edf3ColorSchemeTb4b4b4,
Tb4b4b4)Tb4b4b4: Te6edf3AnnotatedString Tb4b4b4{
Tff7b72val Te6edf3highlightStyle Tff7b72= Te6edf3SpanStyleTb4b4b4(Te6edf3background Tff7b72= Te6edf3colorSchemeTb4b4b4.Te6edf3primaryTb4b4b4.Te6edf3copyTb4b4b4(Te6edf3alpha Tff7b72= T79c0ff0.3fTb4b4b4)Tb4b4b4, Te6edf3color Tff7b72= Te6edf3colorSchemeTb4b4b4.Te6edf3onSurfaceTb4b4b4)
Tff7b72return Te6edf3rememberTb4b4b4(Te6edf3decodedPayloadTb4b4b4, Te6edf3searchTextTb4b4b4) Tb4b4b4{
Te6edf3buildAnnotatedString Tb4b4b4{
Te6edf3appendTb4b4b4(Te6edf3decodedPayloadTb4b4b4)
Tff7b72if Tb4b4b4(Te6edf3searchTextTb4b4b4.Te6edf3isNotEmptyTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3searchTextTb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff"Ta5d6ff Ta5d6ff"Tb4b4b4)Tb4b4b4.Te6edf3forEach Tb4b4b4{ Te6edf3term Tff7b72-Tff7b72>
Te6edf3RegexTb4b4b4(Te6edf3RegexTb4b4b4.Te6edf3escapeTb4b4b4(Te6edf3termTb4b4b4)Tb4b4b4, Te6edf3RegexOptionTb4b4b4.Te6edf3IGNORE_CASETb4b4b4)Tb4b4b4.Te6edf3findAllTb4b4b4(Te6edf3decodedPayloadTb4b4b4)Tb4b4b4.Te6edf3forEach Tb4b4b4{ Te6edf3match Tff7b72-Tff7b72>
Te6edf3addStyleTb4b4b4(Te6edf3style Tff7b72= Te6edf3highlightStyleTb4b4b4, Te6edf3start Tff7b72= Te6edf3matchTb4b4b4.Te6edf3rangeTb4b4b4.Te6edf3firstTb4b4b4, Te6edf3end Tff7b72= Te6edf3matchTb4b4b4.Te6edf3rangeTb4b4b4.Te6edf3last Tff7b72+ T79c0ff1Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Served by rngit 1.5.0 - Generated in 0.13s